OCC Defining Macros

/Dxxx define a macro

This switch defines a macro as if a #define statement had been used somewhere in the source. It is useful for building different versions of a program without modifying the source files between compiles. Note that you may not give macros defined this way a value. For example:

 OCC /DORANGE myfunc.c

is equivalent to placing the following statement in the file and compiling it.

 #define ORANGE

Standard Predefined Macros

The following standard macros are predefined by the compiler:

Macro Usage
__FILE__ name of source file
__DATE__ the current date
__DATEISO__ the current date (ISO format)
__TIME__ the current time
__LINE__ the current line number

Non-standard predefined macros

The following non-standard macros are predefined by the compiler:

Macro Usage
__ORANGEC__ always defined, value is "major version * 100 + minor version"
__ORANGEC_MAJOR__ always defined, value is "major version"
__ORANGEC_MINOR__ always defined, value is "minor version"
__ORANGEC_PATCHLEVEL__ always defined, value is "build number"
__VERSION__ always defined, rendition of the major/revision/minor/build as a string
__RTTI__ defined when C++ rtti/exception handling info is present
__386__ always defined
__i386__ always defined
_i386_ always defined
__i386 always defined
__WIN32__ defined for WIN32
_WIN32 defined for WIN32
__DOS__ defined for MSDOS
__RAW_IMAGE__ defined if building a raw image
__LSCRTL_DLL defined when LSCRTL.dll is in use
__MSVCRT_DLL defined when MSVCRT.dll is in use
__CRTDLL_DLL defined when CRTDLL.dll is in use
__COUNTER__ starts at 0 and increments every usage